#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
	char id[10];    // 学号
	char name[20];  // 姓名
	float score[5]; // 考试成绩
	float total;    // 总分
	float average;  // 平均分
} Student;
int main() {
	int n, m, i, j, k;
	Student stu[30], temp;
	// 从键盘读入班级人数和考试科目数
	printf("请输入班级人数（不超过30人）：");
	scanf("%d", &n);
	printf("请输入考试科目数（不超过5门）：");
	scanf("%d", &m);
	// 从键盘读入每个学生的信息和考试成绩
	for (i = 0; i < n; i++) {
		printf("请输入第%d个学生的学号、姓名和各科成绩：\n", i + 1);
		scanf("%s%s", stu[i].id, stu[i].name);
		stu[i].total = 0;
		for (j = 0; j < m; j++) {
			scanf("%f", &stu[i].score[j]);
			stu[i].total += stu[i].score[j];
		}
		stu[i].average = stu[i].total / m;
	}
	// 按总分降序排列学生成绩表
	for (i = 0; i < n - 1; i++) {
		for (j = i + 1; j < n; j++) {
			if (stu[i].total < stu[j].total) {
				temp = stu[i];
				stu[i] = stu[j];
				stu[j] = temp;
			}
		}
	}
	// 输出每个同学的学号、姓名、各科成绩、总分和平均分
	printf("学号\t姓名");
	for (j = 0; j < m; j++) {
		printf("\t科目%d", j + 1);
	}
	printf("\t总分\t平均分\n");
	for (i = 0; i < n; i++) {
		printf("%s\t%s", stu[i].id, stu[i].name);
		for (j = 0; j < m; j++) {
			printf("\t%f", stu[i].score[j]);
		}
		printf("\t%f\t%f\n", stu[i].total, stu[i].average);
	}
	return 0;
}
